Обновление до версии v1.6
В версии dbt Core v1.6 есть три ключевые области фокуса:
- Следующий этап развития multi-project deployments: улучшения контрактов, групп и управления доступом, версий, а также базовые строительные блоки для межпроектного
ref - Перезапуск семантического слоя: интеграция dbt Core и MetricFlow
- Механизмы для поддержки зрелых развертываний в масштабе (
dbt cloneиdbt retry)
Ресурсы
Что нужно знать перед обновлением
dbt Labs стремится обеспечить обратную совместимость для всех версий 1.x, за исключением изменений, явно указанных ниже. Если вы столкнетесь с ошибкой при обновлении, пожалуйста, сообщите нам, создав проблему.
Изменения в поведении
metricsСпецификация для метрик изменилась и теперь использует MetricFlow.
Если ваш проект dbt определяет метрики, вам необходимо перейти на dbt v1.6, так как спецификация YAML переместилась из dbt_metrics в MetricFlow. Любые тесты, которые у вас есть, не будут компилироваться на v1.5 или более старых версиях.
- dbt Core v1.6 не поддерживает Python 3.7, срок поддержки которого (End Of Life) закончился 23 июня. Поддерживаемые версии Python: 3.8, 3.9, 3.10 и 3.11.
- В рамках перезапуска (в статусе beta) dbt Semantic layer спецификация
metricsбыла существенно изменена. Подробнее о том, как выполнить миграцию на обновлённый dbt Semantic Layer, см. руководство по миграции. - Версия схемы manifest теперь — v10.
- dbt Labs прекращает поддержку установки dbt Core и адаптеров через Homebrew. Подробнее см. обсуждение.
Для потребителей артефактов dbt (метаданные)
Версия схемы манифеста обновлена до v10. Конкретные изменения:
- Добавление
semantic_modelsи изменения в атрибутахmetrics - Добавление
deprecation_dateкак свойства модели - Добавление
on_configuration_changeкак конфигурации узла по умолчанию (для поддержки материализованных представлений) - Небольшие изменения типов в
contractsиconstraints - Манифест
metadataвключаетproject_name
Для разработчиков плагинов адаптеров
Для получения более подробной информации и возможности задать вопросы, пожалуйста, ознакомьтесь с обсуждением и оставьте комментарий в GH: dbt-labs/dbt Core#7958.
Новая и измененная документация
MetricFlow
- Создавайте свои метрики с помощью MetricFlow — ключевого компонента Semantic Layer. Вы можете определять метрики и строить семантические модели с помощью MetricFlow, доступного в командной строке (CLI) для dbt Core версии v1.6 beta и выше.
Материализованные представления
Поддерживается на:
Новые команды для зрелого развертывания
dbt retry выполняет ранее запущенную команду с точки сбоя. Перестройте только те узлы, которые завершились ошибкой или были пропущены в предыдущем запуске/сборке/тесте, вместо того чтобы начинать с нуля.
dbt clone использует функциональность каждой платформы данных для создания легковесных копий моделей dbt из одной среды в другую. Полезно при быстром развертывании новой среды разработки или продвижении конкретных моделей из промежуточной среды в производственную.
Многопроектное сотрудничество
Дата устаревания: Модели могут объявлять дату устаревания, которая будет предупреждать производителей моделей и потребителей ниже по потоку. Это позволяет установить четкие окна миграции для версионных моделей и предоставляет механизм для удаления незрелых или малоиспользуемых моделей, помогая избежать разрастания проекта.
Названия моделей могут дублироваться в разных пространствах имен (проектах/пакетах), если они уникальны в каждом проекте/пакете. Мы настоятельно рекомендуем использовать двухаргументный ref при ссылке на модель из другого пакета/проекта.
Больше согласованности и гибкости вокруг пакетов. Ресурсы, определенные в пакете, будут учитывать определения переменных и глобальных макросов в рамках этого пакета.
vars, определенные вdbt_project.ymlпакета, теперь доступны в порядке разрешения при компиляции узлов в этом пакете, хотя CLI--varsиvarsкорневого проекта все еще будут иметь приоритет. Подробнее см. "Приоритет переменных".- Макросы
generate_x_name(определяющие пользовательские правила для именования базы данных, схемы, псевдонимов) следуют той же схеме, что и другие "глобальные" макросы для переопределений в рамках пакета. См. макросы диспетчеризации для обзора возможных схем.
Project dependencies: Представляет файл dependencies.yml и зависимые projects как функциональность dbt Enterprise. Позволяет принудительно применять правила доступа к моделям (public vs. protected/private) на границах проектов и пакетов. Обеспечивает кросс‑проектный ref к публичным моделям без необходимости устанавливать исходный код вышестоящего проекта.
:::
Устаревший функционал
Возможность для установленных пакетов переопределять встроенные материализации без явного согласия пользователя устаревает.
-
Переопределение встроенной материализации из установленного пакета вызывает предупреждение об устаревании.
-
Использование пользовательской материализации из установленного пакета не вызывает предупреждения об устаревании.
-
Использование переопределения встроенной материализации из корневого проекта через оберточную материализацию все еще поддерживается. Например:
{% materialization view, default %}
{{ return(my_cool_package.materialization_view_default()) }}
{% endmaterialization %}
Быстрые изменения
state:unmodifiedиstate:oldдля MECE выборки по состояниюinvocation_args_dictвключает полнуюinvocation_commandкак строкуdbt debug --connectionдля тестирования только подключения к платформе данных, указанного в профилеdbt docs generate --empty-catalogдля пропуска заполнения каталога при генерации документации--defer-stateпозволяет более детально управлятьdbt lsдобавляет метод выбора семантической модели, позволяя использоватьdbt ls -s "semantic_model:*"и возможность выполнятьdbt ls --resource-type semantic_model.- Синтаксис для
DBT_ENV_SECRET_изменен наDBT_ENV_SECRETи больше не требует завершающего подчеркивания.